package com.dragon.modules.yuegou.query.message;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dragon.modules.yuegou.entity.message.MessageEntity;
import com.dragon.modules.yuegou.enums.MsgType;
import com.dragon.modules.yuegou.enums.Platform;
import com.dragon.modules.yuegou.enums.message.MessageChannel;
import com.dragon.modules.yuegou.enums.message.MessageFromType;
import com.dragon.modules.yuegou.enums.message.MessageSystemType;
import com.dragon.modules.yuegou.enums.message.MessageToType;
import com.dragon.modules.yuegou.mybatis.Condition;
import com.dragon.modules.yuegou.mybatis.Query;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.annotation.JsonUnwrapped;

import java.time.LocalDateTime;

/**
 * 消息 动态查询条件
 *
 * @author pbuilder generated
 * @date 2020-05-16 13:43:59
 * @version 2.0
 */
@JsonInclude(Include.NON_NULL)
public class MessageQuery extends MessageEntity implements Query<MessageEntity> {

	/** 消息ID查询条件 */
	@JsonUnwrapped(prefix = "id")
	private Condition<String> idCondition;

	/** 消息模板ID查询条件 */
	@JsonUnwrapped(prefix = "templateId")
	private Condition<String> templateIdCondition;

	/** [全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM查询条件 */
	@JsonUnwrapped(prefix = "platform")
	private Condition<Platform> platformCondition;

	/** [枚举]来源类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM查询条件 */
	@JsonUnwrapped(prefix = "fromType")
	private Condition<MessageFromType> fromTypeCondition;

	/** 用户/会员ID，由系统发出固定为1查询条件 */
	@JsonUnwrapped(prefix = "fromUser")
	private Condition<String> fromUserCondition;

	/** [枚举]目标类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM查询条件 */
	@JsonUnwrapped(prefix = "toType")
	private Condition<MessageToType> toTypeCondition;

	/** 目标用户/会员ID，发给系统固定为1查询条件 */
	@JsonUnwrapped(prefix = "toUser")
	private Condition<String> toUserCondition;

	/** [枚举]消息通道：0-系统-SYSTEM、1-短信-SMS、2-邮件-EMAIL、3-极光推送-JPUSH、4-微信-WECHAT查询条件 */
	@JsonUnwrapped(prefix = "channel")
	private Condition<MessageChannel> channelCondition;

	/** [全局枚举]消息类型：0-文本消息-TEXT、1-语音消息-VOICE、2-APP消息-APP、3-HTML消息-HTML查询条件 */
	@JsonUnwrapped(prefix = "msgType")
	private Condition<MsgType> msgTypeCondition;

	/** [枚举]系统消息类型：0-退款消息-REFUND、1-即将过期提醒-EXPIRED、2-悦卡发放提醒-LSSUE、3-点赞-LIKE、4-关注-ATTENTION查询条件 */
	@JsonUnwrapped(prefix = "systemType")
	private Condition<MessageSystemType> systemTypeCondition;

	/** 消息标题查询条件 */
	@JsonUnwrapped(prefix = "title")
	private Condition<String> titleCondition;

	/** 消息内容查询条件 */
	@JsonUnwrapped(prefix = "content")
	private Condition<String> contentCondition;

	/** base64音频查询条件 */
	@JsonUnwrapped(prefix = "audioBase64")
	private Condition<String> audioBase64Condition;

	/** 跳转地址查询条件 */
	@JsonUnwrapped(prefix = "url")
	private Condition<String> urlCondition;

	/** 创建时间查询条件 */
	@JsonUnwrapped(prefix = "createdTime")
	private Condition<LocalDateTime> createdTimeCondition;

	/** 是否已经触达查询条件 */
	@JsonUnwrapped(prefix = "reached")
	private Condition<Boolean> reachedCondition;

	/** 触达时间查询条件 */
	@JsonUnwrapped(prefix = "reachedTime")
	private Condition<LocalDateTime> reachedTimeCondition;

	/** 发送者消息是否删除：0-false-不删除、1-true-删除查询条件 */
	@JsonUnwrapped(prefix = "fromDel")
	private Condition<Boolean> fromDelCondition;

	/** 发送者删除消息时间查询条件 */
	@JsonUnwrapped(prefix = "fromDelTime")
	private Condition<LocalDateTime> fromDelTimeCondition;

	/** 接收者消息是否删除：0-false-不删除、1-true-删除查询条件 */
	@JsonUnwrapped(prefix = "toDel")
	private Condition<Boolean> toDelCondition;

	/** 接收者删除消息时间查询条件 */
	@JsonUnwrapped(prefix = "toDelTime")
	private Condition<LocalDateTime> toDelTimeCondition;

	/**
	 * 构造一个查询条件对象
	 */
	public MessageQuery() {
		super();
	}

	/**
	 * 依据实体对象构造一个查询条件对象
	 *
	 * @param entity 实体对象
	 */
	public MessageQuery(MessageEntity entity) {
		super(entity);
	}

	/**
	 * 依据其它查询条件对象的信息构造一个查询条件对象
	 *
	 * @param other 查询条件对象
	 */
	public MessageQuery(MessageQuery other) {
		super(other);
		if (other.idCondition != null) {
			this.idCondition = other.idCondition.copy();
		}
		if (other.templateIdCondition != null) {
			this.templateIdCondition = other.templateIdCondition.copy();
		}
		if (other.platformCondition != null) {
			this.platformCondition = other.platformCondition.copy();
		}
		if (other.fromTypeCondition != null) {
			this.fromTypeCondition = other.fromTypeCondition.copy();
		}
		if (other.fromUserCondition != null) {
			this.fromUserCondition = other.fromUserCondition.copy();
		}
		if (other.toTypeCondition != null) {
			this.toTypeCondition = other.toTypeCondition.copy();
		}
		if (other.toUserCondition != null) {
			this.toUserCondition = other.toUserCondition.copy();
		}
		if (other.channelCondition != null) {
			this.channelCondition = other.channelCondition.copy();
		}
		if (other.msgTypeCondition != null) {
			this.msgTypeCondition = other.msgTypeCondition.copy();
		}
		if (other.systemTypeCondition != null) {
			this.systemTypeCondition = other.systemTypeCondition.copy();
		}
		if (other.titleCondition != null) {
			this.titleCondition = other.titleCondition.copy();
		}
		if (other.contentCondition != null) {
			this.contentCondition = other.contentCondition.copy();
		}
		if (other.audioBase64Condition != null) {
			this.audioBase64Condition = other.audioBase64Condition.copy();
		}
		if (other.urlCondition != null) {
			this.urlCondition = other.urlCondition.copy();
		}
		this.setOther(other);
	}
	private void setOther(MessageQuery other){
		if(other.createdTimeCondition != null) {
			this.createdTimeCondition = other.createdTimeCondition.copy();
		}
		if(other.reachedCondition != null) {
			this.reachedCondition = other.reachedCondition.copy();
		}
		if(other.reachedTimeCondition != null) {
			this.reachedTimeCondition = other.reachedTimeCondition.copy();
		}
		if(other.fromDelCondition != null) {
			this.fromDelCondition = other.fromDelCondition.copy();
		}
		if(other.fromDelTimeCondition != null) {
			this.fromDelTimeCondition = other.fromDelTimeCondition.copy();
		}
		if(other.toDelCondition != null) {
			this.toDelCondition = other.toDelCondition.copy();
		}
		if(other.toDelTimeCondition != null) {
			this.toDelTimeCondition = other.toDelTimeCondition.copy();
		}
	}

	@Override
	public QueryWrapper<MessageEntity> toQueryWrapper() {
		QueryWrapper<MessageEntity> wrapper = new QueryWrapper<>(this);
		if (idCondition != null) {
			idCondition.toWrapper(wrapper, COL_ID);
		}
		if (templateIdCondition != null) {
			templateIdCondition.toWrapper(wrapper, COL_TEMPLATE_ID);
		}
		if (platformCondition != null) {
			platformCondition.toWrapper(wrapper, COL_PLATFORM);
		}
		if (fromTypeCondition != null) {
			fromTypeCondition.toWrapper(wrapper, COL_FROM_TYPE);
		}
		if (fromUserCondition != null) {
			fromUserCondition.toWrapper(wrapper, COL_FROM_USER);
		}
		if (toTypeCondition != null) {
			toTypeCondition.toWrapper(wrapper, COL_TO_TYPE);
		}
		if (toUserCondition != null) {
			toUserCondition.toWrapper(wrapper, COL_TO_USER);
		}
		if (channelCondition != null) {
			channelCondition.toWrapper(wrapper, COL_CHANNEL);
		}
		if (msgTypeCondition != null) {
			msgTypeCondition.toWrapper(wrapper, COL_MSG_TYPE);
		}
		if (systemTypeCondition != null) {
			systemTypeCondition.toWrapper(wrapper, COL_SYSTEM_TYPE);
		}
		if (titleCondition != null) {
			titleCondition.toWrapper(wrapper, COL_TITLE);
		}
		if (contentCondition != null) {
			contentCondition.toWrapper(wrapper, COL_CONTENT);
		}
		if (audioBase64Condition != null) {
			audioBase64Condition.toWrapper(wrapper, COL_AUDIO_BASE64);
		}
		if (urlCondition != null) {
			urlCondition.toWrapper(wrapper, COL_URL);
		}
		return getQueryWrapper(wrapper);
	}

	private QueryWrapper<MessageEntity> getQueryWrapper(QueryWrapper<MessageEntity> wrapper){
		if (createdTimeCondition != null) {
			createdTimeCondition.toWrapper(wrapper, COL_CREATED_TIME);
		}
		if (reachedCondition != null) {
			reachedCondition.toWrapper(wrapper, COL_REACHED);
		}
		if (reachedTimeCondition != null) {
			reachedTimeCondition.toWrapper(wrapper, COL_REACHED_TIME);
		}
		if (fromDelCondition != null) {
			fromDelCondition.toWrapper(wrapper, COL_FROM_DEL);
		}
		if (fromDelTimeCondition != null) {
			fromDelTimeCondition.toWrapper(wrapper, COL_FROM_DEL_TIME);
		}
		if (toDelCondition != null) {
			toDelCondition.toWrapper(wrapper, COL_TO_DEL);
		}
		if (toDelTimeCondition != null) {
			toDelTimeCondition.toWrapper(wrapper, COL_TO_DEL_TIME);
		}
		return wrapper;
	}

	/**
	 * 构造并返回消息ID查询条件
	 *
	 * @return idCondition 消息ID查询条件
	 */
	public Condition<String> id() {
		this.idCondition = new Condition<>();
		return this.idCondition;
	}

	/**
	 * 获取消息ID查询条件
	 *
	 * @return idCondition 消息ID查询条件
	 */
	public Condition<String> getIdCondition() {
		return idCondition;
	}

	/**
	 * 设置消息ID查询条件
	 *
	 * @param idCondition 消息ID查询条件
	 */
	public void setIdCondition(Condition<String> idCondition) {
		this.idCondition = idCondition;
	}

	/**
	 * 构造并返回消息模板ID查询条件
	 *
	 * @return templateIdCondition 消息模板ID查询条件
	 */
	public Condition<String> templateId() {
		this.templateIdCondition = new Condition<>();
		return this.templateIdCondition;
	}

	/**
	 * 获取消息模板ID查询条件
	 *
	 * @return templateIdCondition 消息模板ID查询条件
	 */
	public Condition<String> getTemplateIdCondition() {
		return templateIdCondition;
	}

	/**
	 * 设置消息模板ID查询条件
	 *
	 * @param templateIdCondition 消息模板ID查询条件
	 */
	public void setTemplateIdCondition(Condition<String> templateIdCondition) {
		this.templateIdCondition = templateIdCondition;
	}

	/**
	 * 构造并返回[全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM查询条件
	 *
	 * @return platformCondition [全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM查询条件
	 */
	public Condition<Platform> platform() {
		this.platformCondition = new Condition<>();
		return this.platformCondition;
	}

	/**
	 * 获取[全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM查询条件
	 *
	 * @return platformCondition [全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM查询条件
	 */
	public Condition<Platform> getPlatformCondition() {
		return platformCondition;
	}

	/**
	 * 设置[全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM查询条件
	 *
	 * @param platformCondition [全局枚举]平台：0-悦商圈-YSQ_APP、1-悦购-YSQ_XCX、2-悦商惠小程序-YSQ_MERCHANT_XCX、3-集团版-YSQ_GROUP、4-大运营平台-YSQ_PLATFORM查询条件
	 */
	public void setPlatformCondition(Condition<Platform> platformCondition) {
		this.platformCondition = platformCondition;
	}

	/**
	 * 构造并返回[枚举]来源类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM查询条件
	 *
	 * @return fromTypeCondition [枚举]来源类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM查询条件
	 */
	public Condition<MessageFromType> fromType() {
		this.fromTypeCondition = new Condition<>();
		return this.fromTypeCondition;
	}

	/**
	 * 获取[枚举]来源类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM查询条件
	 *
	 * @return fromTypeCondition [枚举]来源类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM查询条件
	 */
	public Condition<MessageFromType> getFromTypeCondition() {
		return fromTypeCondition;
	}

	/**
	 * 设置[枚举]来源类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM查询条件
	 *
	 * @param fromTypeCondition [枚举]来源类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM查询条件
	 */
	public void setFromTypeCondition(Condition<MessageFromType> fromTypeCondition) {
		this.fromTypeCondition = fromTypeCondition;
	}

	/**
	 * 构造并返回用户/会员ID，由系统发出固定为1查询条件
	 *
	 * @return fromUserCondition 用户/会员ID，由系统发出固定为1查询条件
	 */
	public Condition<String> fromUser() {
		this.fromUserCondition = new Condition<>();
		return this.fromUserCondition;
	}

	/**
	 * 获取用户/会员ID，由系统发出固定为1查询条件
	 *
	 * @return fromUserCondition 用户/会员ID，由系统发出固定为1查询条件
	 */
	public Condition<String> getFromUserCondition() {
		return fromUserCondition;
	}

	/**
	 * 设置用户/会员ID，由系统发出固定为1查询条件
	 *
	 * @param fromUserCondition 用户/会员ID，由系统发出固定为1查询条件
	 */
	public void setFromUserCondition(Condition<String> fromUserCondition) {
		this.fromUserCondition = fromUserCondition;
	}

	/**
	 * 构造并返回[枚举]目标类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM查询条件
	 *
	 * @return toTypeCondition [枚举]目标类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM查询条件
	 */
	public Condition<MessageToType> toType() {
		this.toTypeCondition = new Condition<>();
		return this.toTypeCondition;
	}

	/**
	 * 获取[枚举]目标类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM查询条件
	 *
	 * @return toTypeCondition [枚举]目标类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM查询条件
	 */
	public Condition<MessageToType> getToTypeCondition() {
		return toTypeCondition;
	}

	/**
	 * 设置[枚举]目标类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM查询条件
	 *
	 * @param toTypeCondition [枚举]目标类型：0-会员-MEMBER、1-用户-USER、2-系统-SYSTEM查询条件
	 */
	public void setToTypeCondition(Condition<MessageToType> toTypeCondition) {
		this.toTypeCondition = toTypeCondition;
	}

	/**
	 * 构造并返回目标用户/会员ID，发给系统固定为1查询条件
	 *
	 * @return toUserCondition 目标用户/会员ID，发给系统固定为1查询条件
	 */
	public Condition<String> toUser() {
		this.toUserCondition = new Condition<>();
		return this.toUserCondition;
	}

	/**
	 * 获取目标用户/会员ID，发给系统固定为1查询条件
	 *
	 * @return toUserCondition 目标用户/会员ID，发给系统固定为1查询条件
	 */
	public Condition<String> getToUserCondition() {
		return toUserCondition;
	}

	/**
	 * 设置目标用户/会员ID，发给系统固定为1查询条件
	 *
	 * @param toUserCondition 目标用户/会员ID，发给系统固定为1查询条件
	 */
	public void setToUserCondition(Condition<String> toUserCondition) {
		this.toUserCondition = toUserCondition;
	}

	/**
	 * 构造并返回[枚举]消息通道：0-系统-SYSTEM、1-短信-SMS、2-邮件-EMAIL、3-极光推送-JPUSH、4-微信-WECHAT查询条件
	 *
	 * @return channelCondition [枚举]消息通道：0-系统-SYSTEM、1-短信-SMS、2-邮件-EMAIL、3-极光推送-JPUSH、4-微信-WECHAT查询条件
	 */
	public Condition<MessageChannel> channel() {
		this.channelCondition = new Condition<>();
		return this.channelCondition;
	}

	/**
	 * 获取[枚举]消息通道：0-系统-SYSTEM、1-短信-SMS、2-邮件-EMAIL、3-极光推送-JPUSH、4-微信-WECHAT查询条件
	 *
	 * @return channelCondition [枚举]消息通道：0-系统-SYSTEM、1-短信-SMS、2-邮件-EMAIL、3-极光推送-JPUSH、4-微信-WECHAT查询条件
	 */
	public Condition<MessageChannel> getChannelCondition() {
		return channelCondition;
	}

	/**
	 * 设置[枚举]消息通道：0-系统-SYSTEM、1-短信-SMS、2-邮件-EMAIL、3-极光推送-JPUSH、4-微信-WECHAT查询条件
	 *
	 * @param channelCondition [枚举]消息通道：0-系统-SYSTEM、1-短信-SMS、2-邮件-EMAIL、3-极光推送-JPUSH、4-微信-WECHAT查询条件
	 */
	public void setChannelCondition(Condition<MessageChannel> channelCondition) {
		this.channelCondition = channelCondition;
	}

	/**
	 * 构造并返回[全局枚举]消息类型：0-文本消息-TEXT、1-语音消息-VOICE、2-APP消息-APP、3-HTML消息-HTML查询条件
	 *
	 * @return msgTypeCondition [全局枚举]消息类型：0-文本消息-TEXT、1-语音消息-VOICE、2-APP消息-APP、3-HTML消息-HTML查询条件
	 */
	public Condition<MsgType> msgType() {
		this.msgTypeCondition = new Condition<>();
		return this.msgTypeCondition;
	}

	/**
	 * 获取[全局枚举]消息类型：0-文本消息-TEXT、1-语音消息-VOICE、2-APP消息-APP、3-HTML消息-HTML查询条件
	 *
	 * @return msgTypeCondition [全局枚举]消息类型：0-文本消息-TEXT、1-语音消息-VOICE、2-APP消息-APP、3-HTML消息-HTML查询条件
	 */
	public Condition<MsgType> getMsgTypeCondition() {
		return msgTypeCondition;
	}

	/**
	 * 设置[全局枚举]消息类型：0-文本消息-TEXT、1-语音消息-VOICE、2-APP消息-APP、3-HTML消息-HTML查询条件
	 *
	 * @param msgTypeCondition [全局枚举]消息类型：0-文本消息-TEXT、1-语音消息-VOICE、2-APP消息-APP、3-HTML消息-HTML查询条件
	 */
	public void setMsgTypeCondition(Condition<MsgType> msgTypeCondition) {
		this.msgTypeCondition = msgTypeCondition;
	}

	/**
	 * 构造并返回[枚举]系统消息类型：0-退款消息-REFUND、1-即将过期提醒-EXPIRED、2-悦卡发放提醒-LSSUE、3-点赞-LIKE、4-关注-ATTENTION查询条件
	 *
	 * @return systemTypeCondition [枚举]系统消息类型：0-退款消息-REFUND、1-即将过期提醒-EXPIRED、2-悦卡发放提醒-LSSUE、3-点赞-LIKE、4-关注-ATTENTION查询条件
	 */
	public Condition<MessageSystemType> systemType() {
		this.systemTypeCondition = new Condition<>();
		return this.systemTypeCondition;
	}

	/**
	 * 获取[枚举]系统消息类型：0-退款消息-REFUND、1-即将过期提醒-EXPIRED、2-悦卡发放提醒-LSSUE、3-点赞-LIKE、4-关注-ATTENTION查询条件
	 *
	 * @return systemTypeCondition [枚举]系统消息类型：0-退款消息-REFUND、1-即将过期提醒-EXPIRED、2-悦卡发放提醒-LSSUE、3-点赞-LIKE、4-关注-ATTENTION查询条件
	 */
	public Condition<MessageSystemType> getSystemTypeCondition() {
		return systemTypeCondition;
	}

	/**
	 * 设置[枚举]系统消息类型：0-退款消息-REFUND、1-即将过期提醒-EXPIRED、2-悦卡发放提醒-LSSUE、3-点赞-LIKE、4-关注-ATTENTION查询条件
	 *
	 * @param systemTypeCondition [枚举]系统消息类型：0-退款消息-REFUND、1-即将过期提醒-EXPIRED、2-悦卡发放提醒-LSSUE、3-点赞-LIKE、4-关注-ATTENTION查询条件
	 */
	public void setSystemTypeCondition(Condition<MessageSystemType> systemTypeCondition) {
		this.systemTypeCondition = systemTypeCondition;
	}

	/**
	 * 构造并返回消息标题查询条件
	 *
	 * @return titleCondition 消息标题查询条件
	 */
	public Condition<String> title() {
		this.titleCondition = new Condition<>();
		return this.titleCondition;
	}

	/**
	 * 获取消息标题查询条件
	 *
	 * @return titleCondition 消息标题查询条件
	 */
	public Condition<String> getTitleCondition() {
		return titleCondition;
	}

	/**
	 * 设置消息标题查询条件
	 *
	 * @param titleCondition 消息标题查询条件
	 */
	public void setTitleCondition(Condition<String> titleCondition) {
		this.titleCondition = titleCondition;
	}

	/**
	 * 构造并返回消息内容查询条件
	 *
	 * @return contentCondition 消息内容查询条件
	 */
	public Condition<String> content() {
		this.contentCondition = new Condition<>();
		return this.contentCondition;
	}

	/**
	 * 获取消息内容查询条件
	 *
	 * @return contentCondition 消息内容查询条件
	 */
	public Condition<String> getContentCondition() {
		return contentCondition;
	}

	/**
	 * 设置消息内容查询条件
	 *
	 * @param contentCondition 消息内容查询条件
	 */
	public void setContentCondition(Condition<String> contentCondition) {
		this.contentCondition = contentCondition;
	}

	/**
	 * 构造并返回base64音频查询条件
	 *
	 * @return audioBase64Condition base64音频查询条件
	 */
	public Condition<String> audioBase64() {
		this.audioBase64Condition = new Condition<>();
		return this.audioBase64Condition;
	}

	/**
	 * 获取base64音频查询条件
	 *
	 * @return audioBase64Condition base64音频查询条件
	 */
	public Condition<String> getAudioBase64Condition() {
		return audioBase64Condition;
	}

	/**
	 * 设置base64音频查询条件
	 *
	 * @param audioBase64Condition base64音频查询条件
	 */
	public void setAudioBase64Condition(Condition<String> audioBase64Condition) {
		this.audioBase64Condition = audioBase64Condition;
	}

	/**
	 * 构造并返回跳转地址查询条件
	 *
	 * @return urlCondition 跳转地址查询条件
	 */
	public Condition<String> url() {
		this.urlCondition = new Condition<>();
		return this.urlCondition;
	}

	/**
	 * 获取跳转地址查询条件
	 *
	 * @return urlCondition 跳转地址查询条件
	 */
	public Condition<String> getUrlCondition() {
		return urlCondition;
	}

	/**
	 * 设置跳转地址查询条件
	 *
	 * @param urlCondition 跳转地址查询条件
	 */
	public void setUrlCondition(Condition<String> urlCondition) {
		this.urlCondition = urlCondition;
	}

	/**
	 * 构造并返回创建时间查询条件
	 *
	 * @return createdTimeCondition 创建时间查询条件
	 */
	public Condition<LocalDateTime> createdTime() {
		this.createdTimeCondition = new Condition<>();
		return this.createdTimeCondition;
	}

	/**
	 * 获取创建时间查询条件
	 *
	 * @return createdTimeCondition 创建时间查询条件
	 */
	public Condition<LocalDateTime> getCreatedTimeCondition() {
		return createdTimeCondition;
	}

	/**
	 * 设置创建时间查询条件
	 *
	 * @param createdTimeCondition 创建时间查询条件
	 */
	public void setCreatedTimeCondition(Condition<LocalDateTime> createdTimeCondition) {
		this.createdTimeCondition = createdTimeCondition;
	}

	/**
	 * 构造并返回是否已经触达查询条件
	 *
	 * @return reachedCondition 是否已经触达查询条件
	 */
	public Condition<Boolean> reached() {
		this.reachedCondition = new Condition<>();
		return this.reachedCondition;
	}

	/**
	 * 获取是否已经触达查询条件
	 *
	 * @return reachedCondition 是否已经触达查询条件
	 */
	public Condition<Boolean> getReachedCondition() {
		return reachedCondition;
	}

	/**
	 * 设置是否已经触达查询条件
	 *
	 * @param reachedCondition 是否已经触达查询条件
	 */
	public void setReachedCondition(Condition<Boolean> reachedCondition) {
		this.reachedCondition = reachedCondition;
	}

	/**
	 * 构造并返回触达时间查询条件
	 *
	 * @return reachedTimeCondition 触达时间查询条件
	 */
	public Condition<LocalDateTime> reachedTime() {
		this.reachedTimeCondition = new Condition<>();
		return this.reachedTimeCondition;
	}

	/**
	 * 获取触达时间查询条件
	 *
	 * @return reachedTimeCondition 触达时间查询条件
	 */
	public Condition<LocalDateTime> getReachedTimeCondition() {
		return reachedTimeCondition;
	}

	/**
	 * 设置触达时间查询条件
	 *
	 * @param reachedTimeCondition 触达时间查询条件
	 */
	public void setReachedTimeCondition(Condition<LocalDateTime> reachedTimeCondition) {
		this.reachedTimeCondition = reachedTimeCondition;
	}

	/**
	 * 构造并返回发送者消息是否删除：0-false-不删除、1-true-删除查询条件
	 *
	 * @return fromDelCondition 发送者消息是否删除：0-false-不删除、1-true-删除查询条件
	 */
	public Condition<Boolean> fromDel() {
		this.fromDelCondition = new Condition<>();
		return this.fromDelCondition;
	}

	/**
	 * 获取发送者消息是否删除：0-false-不删除、1-true-删除查询条件
	 *
	 * @return fromDelCondition 发送者消息是否删除：0-false-不删除、1-true-删除查询条件
	 */
	public Condition<Boolean> getFromDelCondition() {
		return fromDelCondition;
	}

	/**
	 * 设置发送者消息是否删除：0-false-不删除、1-true-删除查询条件
	 *
	 * @param fromDelCondition 发送者消息是否删除：0-false-不删除、1-true-删除查询条件
	 */
	public void setFromDelCondition(Condition<Boolean> fromDelCondition) {
		this.fromDelCondition = fromDelCondition;
	}

	/**
	 * 构造并返回发送者删除消息时间查询条件
	 *
	 * @return fromDelTimeCondition 发送者删除消息时间查询条件
	 */
	public Condition<LocalDateTime> fromDelTime() {
		this.fromDelTimeCondition = new Condition<>();
		return this.fromDelTimeCondition;
	}

	/**
	 * 获取发送者删除消息时间查询条件
	 *
	 * @return fromDelTimeCondition 发送者删除消息时间查询条件
	 */
	public Condition<LocalDateTime> getFromDelTimeCondition() {
		return fromDelTimeCondition;
	}

	/**
	 * 设置发送者删除消息时间查询条件
	 *
	 * @param fromDelTimeCondition 发送者删除消息时间查询条件
	 */
	public void setFromDelTimeCondition(Condition<LocalDateTime> fromDelTimeCondition) {
		this.fromDelTimeCondition = fromDelTimeCondition;
	}

	/**
	 * 构造并返回接收者消息是否删除：0-false-不删除、1-true-删除查询条件
	 *
	 * @return toDelCondition 接收者消息是否删除：0-false-不删除、1-true-删除查询条件
	 */
	public Condition<Boolean> toDel() {
		this.toDelCondition = new Condition<>();
		return this.toDelCondition;
	}

	/**
	 * 获取接收者消息是否删除：0-false-不删除、1-true-删除查询条件
	 *
	 * @return toDelCondition 接收者消息是否删除：0-false-不删除、1-true-删除查询条件
	 */
	public Condition<Boolean> getToDelCondition() {
		return toDelCondition;
	}

	/**
	 * 设置接收者消息是否删除：0-false-不删除、1-true-删除查询条件
	 *
	 * @param toDelCondition 接收者消息是否删除：0-false-不删除、1-true-删除查询条件
	 */
	public void setToDelCondition(Condition<Boolean> toDelCondition) {
		this.toDelCondition = toDelCondition;
	}

	/**
	 * 构造并返回接收者删除消息时间查询条件
	 *
	 * @return toDelTimeCondition 接收者删除消息时间查询条件
	 */
	public Condition<LocalDateTime> toDelTime() {
		this.toDelTimeCondition = new Condition<>();
		return this.toDelTimeCondition;
	}

	/**
	 * 获取接收者删除消息时间查询条件
	 *
	 * @return toDelTimeCondition 接收者删除消息时间查询条件
	 */
	public Condition<LocalDateTime> getToDelTimeCondition() {
		return toDelTimeCondition;
	}

	/**
	 * 设置接收者删除消息时间查询条件
	 *
	 * @param toDelTimeCondition 接收者删除消息时间查询条件
	 */
	public void setToDelTimeCondition(Condition<LocalDateTime> toDelTimeCondition) {
		this.toDelTimeCondition = toDelTimeCondition;
	}

}
